iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0

由於Object一般都很大,幾十GB都屬於正常現象,所以上傳或下載的過程中難免回遇到網路不穩的問題導致中斷

用過chrome的人都知道,如果下載到一半失敗了,可以按右鍵然後繼續,從中間下載,又或是用過著名的FTP工具-Filezilla,有時候上傳一個文件到server,但是中斷了,如果再把原來的文件拖進去,可以不用重新上傳

那這是怎麼做到的呢?首先,我們必須在object的上傳和下載API實作這個功能,我們可以讓使用者多傳幾個參數,例如開始位置和長度,因為object本質上是個非結構化數據,就是一個很長的byte array組成,接下來可以把下載和上傳拆開來講

下載

先說下載是因為下載比較簡單,如果沒意外的話,前端只要一直下載就好,如果遇到斷網,前端會記錄好已經下載多長的資料,根據長度作為起始位置繼續下載,所以在下載前,前端需要向server要一個object的長度大小

上傳

上傳就稍微複雜一點,他不能一直上傳直到斷線,因為前端不知道上傳到哪裡斷了,所以解決方法是一小段一小段上傳,例如一次request就上傳4MB,server回傳OK代表這一小塊上傳成功

當然,以上的方法都是基本的架構,想要更有效率更快的方法還有更多的演算法,本次Lab只實作了上述最簡單的方法思路


上一篇
Day23 Lab 2 - Object storage的RAID實作2
下一篇
Day25 Lab 2 - Object storage 下載續傳
系列文
淺入淺出分散式儲存30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言